package org.smart4j.framework;

import org.smart4j.framework.helper.*;
import org.smart4j.framework.util.ClassUtil;

/**
 * 加载相应的 Helper 类
 *
 * Created by chinalin on 2017/3/16.
 */
public final class HelperLoader {

    /**
     * 集中初始化加载 help 类 ,List是有序存放
     * BeanHelper 依赖 ClassHelper
     * IocHelper 依赖 BeanHelper
     * ControllerHelper 依赖 ClassHelper
     */
    public static void init(){
        Class<?>[] classList = {
                ClassHelper.class ,     //扫描 基础包名下所有类
                BeanHelper.class ,      //实例化 所有Bean的类 (单例)
                /**
                * AopHelper 必须放在第三个位置，BeanHelper是生成所有类的对象，放BeanHelper之前会被BeanHelper盖掉对象
                 * 后面IocHelper是注入成员对象，放IocHelper后面会导致注入的有代理的Service成员,可能注入时没生成代理对象
                */
                AopHelper.class ,       //将有代理的类的对象换成 代理类对象.
                IocHelper.class ,       //将Service类注入到Controller类的 @Inject 成员.
                ControllerHelper.class  //ACTION_MAP-->KEY是Request类(action的请求),VALUE是Handler(controller及其下的@Action 成员方法)
        };
        for (Class<?> cls :classList){
            ClassUtil.loadClass(cls.getName()) ;
        }
    }
}
